package com.core.utils.dbtutil;

import android.util.Log;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class JsonUtil {

    /**
     * 私有化构造方法
     */
    private JsonUtil() {

    }

    /**
     * 将Object转换成JSON串
     *
     * @param obj
     * @return
     */
    public static String toJson(Object obj) {
        String json = "";
        if (obj != null) {
            try {
                json = JSON.toJSONString(obj);
                // json = JSONObject.toJSONString(obj);
            } catch (Exception e) {
            }
        }
        return json;
    }

    /**
     * 将JSON字符串转换成对象
     *
     * @param json 要解析的JSON字符串
     * @param cls  要解析成的对象类型
     * @return
     */
    public static <T> T parseJson(String json, Class<T> cls) {
        T t = null;
        try {
            t = JSON.parseObject(json, cls);
        } catch (Exception e) {
            Log.e("message", "yichang" + e.toString());
        }
        return t;
    }

    /**
     * 将JSON转成List数据集
     *
     * @param json JSON字符串
     * @param cls  要解析成的对象类型
     * @return
     */
    public static <T> List<T> parseList(String json, Class<T> cls) {
        List<T> lst = new ArrayList<T>();
        try {

            lst = (List<T>) JSON.parseArray(json, cls);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return lst;
    }

    /**
     * 将JSON串解析成List<Map<String, Object>>
     *
     * @param jsonString
     * @return
     */
    public static List<Map<String, Object>> parseListMap(String jsonString) {
        List<Map<String, Object>> lst = new ArrayList<Map<String, Object>>();
        try {

            lst = JSON.parseObject(jsonString, new
                    TypeReference<List<Map<String, Object>>>() {
                    });
        } catch (Exception e) {
        }
        return lst;
    }

    /**
     * 获取json中指定的值
     *
     * @param json JSON字符串
     * @param key  要获取的值对应的key
     * @return
     */
    public static Object getByKey(String json, String key) {

        try {

            Map<String, Object> jsonMap = JSON.parseObject(
                    json, new TypeReference<Map<String, Object>>() {
                    });

            return jsonMap.get(key);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 获取json对应的Map对应
     *
     * @param json JSON字符串
     * @return
     */
    public static Map<String, Object> parseMap(String json) {

        try {

            return JSON.parseObject(json, new TypeReference<Map<String, Object>>() {
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 同步数据Json特殊处理（JSON太大）
     *
     * @param
     * @return
     */
    /*public static Map<String, Object> parseSyncDate(String json) {
        Map<String, Object> valMap = new HashMap<String, Object>();
        if (!CheckUtil.isBlankOrNull(json)) {
            JSONReader reader = new JSONReader(new StringReader(json)) {
            };
            reader.startObject();
            while (reader.hasNext()) {
                valMap.put(reader.readString(), reader.readObject(String.class));
            }
            reader.endObject();
            reader.close();
        }
        return valMap;
    }*/
    public static void main(String[] args) {

        System.out.println(Integer.parseInt("66666677"));
    }
}
